package com.huazhi.wzsnw.util;

import org.apache.shiro.crypto.hash.SimpleHash;

import java.util.Random;

public class Md5Util {

    public static String encryption(String password,String salt){
        Integer hashIterations = 1024;//散列次数
//        //1.不加盐的md5
//        Md5Hash md5 = new Md5Hash(password);
//        System.out.println(md5.toString());
//
//        //2.加盐的md5
//        md5 = new Md5Hash(password, salt);
//        System.out.println(md5.toString());
//
//        //3.加盐再设置散列次数的md5
//        md5 = new Md5Hash(password, salt, hashIterations);
//        System.out.println(md5.toString());

        //4.利用SimpleHash来设置md5(上面三种都可以通过这个来设置，这里举例加盐加散列次数的)
        //第一个参数是算法名称，这里指定md5，第二个是要加密的密码，第三个参数是加盐，第四个是散列次数
        SimpleHash hash = new SimpleHash("md5", password, salt,hashIterations);
        System.out.println(hash.toString());
        return hash.toString();
    }

    public static void main(String[] args) {
//        String password = "123456";//要加密的字符串
//        String salt = "admin";//盐
//        Integer hashIterations = 1024;//散列次数
////        //1.不加盐的md5
////        Md5Hash md5 = new Md5Hash(password);
////        System.out.println(md5.toString());
////
////        //2.加盐的md5
////        md5 = new Md5Hash(password, salt);
////        System.out.println(md5.toString());
////
////        //3.加盐再设置散列次数的md5
////        md5 = new Md5Hash(password, salt, hashIterations);
////        System.out.println(md5.toString());
//
//        //4.利用SimpleHash来设置md5(上面三种都可以通过这个来设置，这里举例加盐加散列次数的)
//        //第一个参数是算法名称，这里指定md5，第二个是要加密的密码，第三个参数是加盐，第四个是散列次数
//        SimpleHash hash = new SimpleHash("md5", password, salt,hashIterations);
//        System.out.println(hash.toString());
//
//
//
//                    //取当前时间的长整形值包含毫秒
//                    long millis = System.currentTimeMillis();        //加上三位随机数
//                     Random random = new Random();
//                     int end3 = random.nextInt(999);//该方法的作用是生成一个随机的int值，该值介于[0,n]的区间，也就是0到n之间的随机int值，包含0而不包含n。
//                    //如果不足三位前面补0  String.format("%03d", end3); 3代表要获得的总长度，0代表传入的参数不够的时候会用0作为填充，d会被传入的参数替代
//                    String str = millis + String.format("%03d", end3);
//                    System.out.println("NO"+str);

        String sources = "0123456789"; // 加上一些字母，就可以生成pc站的验证码了
        Random rand = new Random();
        StringBuffer flag = new StringBuffer();
        for (int j = 0; j < 6; j++)
        {
            flag.append(sources.charAt(rand.nextInt(9)) + "");
        }
        System.out.println(flag.toString());


    }

}
